package trabalho.pkg3;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

//Nós clientes
public class NoCliente
{
    private static Socket socket;
    private static int port;
    private static String IP;
    private static ObjectOutputStream saida;
    private static ObjectInputStream entrada;
    private static InputStreamReader stdin;
    private static BufferedReader terminal;
    private static String op;

    public NoCliente()
    {
    }
    
    public static void menu()
    {
//        System.out.println("***************Menu***************");
        System.out.println("Escolha uma opcao:");
        System.out.println("Adicionar(1)");
        System.out.println("Remover(2)");
        System.out.println("Atualizar(3)");
        System.out.println("Download(4)");
        System.out.println("Sair(5)");
    }
    
    public static void main(String[] args) throws ClassNotFoundException
    {
        stdin = new InputStreamReader(System.in); //Inicia Buffer de leitura de teclado
        terminal = new BufferedReader(stdin);
        String Resposta;
        
        try
        {
            //Cria um socket com IP(primeiro parâmetro) e porta(segundo parâmetro)
            if(args.length > 0)
            {
                
                //Leitura teclado da opção
                menu();
                op = terminal.readLine();
                while(!op.equalsIgnoreCase("5"))
                {
                    //Cria um socket com IP(primeiro parâmetro) e porta(segundo parâmetro)
                    //Conexão com servidor
                     socket = new Socket(args[0], Integer.parseInt(args[1]));

                     //Cria o fluxo para o envio de dados
                    saida = new ObjectOutputStream(socket.getOutputStream());
                    entrada = new ObjectInputStream(socket.getInputStream());
                    
                    switch(op)
                    {
                        case "1":
                            op = "Adicionar";
                            break;
                       
                        case "2":
                            op = "Remover";
                            break;
                            
                        case "3":
                            op = "Atualizar";
                            break;
                            
                        case "4":
                            op = "Download";
                            break;
                    }
                    
                    //Envia da opção
                    saida.flush();
                    saida.writeObject(op);
                    
                    //Envia o nome do arquivo desejado
                    System.out.println("Nome do arquivo:");
                    op = terminal.readLine();
                    saida.flush();
                    saida.writeObject(op);
                    
                    //Recebe o local onde o arquivo se encontra
                    Resposta = (String) entrada.readObject();
                    System.out.println(Resposta);
                    op = terminal.readLine();
                    
                    entrada.close();
                    saida.close();
                    socket.close();
                }
                
                
            } else
            {
                //escrita.println("Insira um argumento");
            }



            //Caso não encontre o host
        } catch(UnknownHostException ex)
        {
            ex.printStackTrace();
            
            //Caso ocorra alguma exceção na criação do fluxo
        } catch(IOException ex)
        {
            ex.printStackTrace();
        }
    }
}